/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package services;

import domain.Fiesta;
import domain.Servicio;
import domain.TipoFiesta;
import domain.TipoServicioxTipoFiesta;
import ejb.FiestaFacadeLocal;
import ejb.ServicioFacadeLocal;
import ejb.TipoServicioxTipoFiestaFacadeLocal;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.jws.WebService;
import javax.ejb.Stateless;
import javax.jws.WebMethod;
import javax.jws.WebParam;

/**
 *
 * @author Reyson
 */
@WebService(serviceName = "PartiService")
@Stateless()
public class PartyService {
    @EJB
    private FiestaFacadeLocal ejbRef;
    @EJB
    private ServicioFacadeLocal ejbServicio;
    
    @EJB
    private TipoServicioxTipoFiestaFacadeLocal ejbTipoServicioxTipoFiesta;
    // Add business logic below. (Right-click in editor and choose
    // "Insert Code > Add Web Service Operation")

    @WebMethod(operationName = "find")
    public Fiesta find(@WebParam(name = "id") Object id) {
        return ejbRef.find(id);
    }

    @WebMethod(operationName = "findAll")
    public List<Fiesta> findAll() {
        return ejbRef.findAll();
    }

    /**
     * Web service operation
     */
    @WebMethod(operationName = "findAllServices")
    public List<Servicio> findAllServices() {
        //TODO write your implementation code here:
        return ejbServicio.findAll();
    }
    
    
    /**
     * Web sevice que entrega según el tipo de fiesta los tipos servicios que tiene asociados
     * Autor: Luisa Fenanda Rincón Pérez
     */
    @WebMethod(operationName = "findTipoServicioXTipoFiesta")
    public List<TipoServicioxTipoFiesta> findTipoServiciosXTipoFiesta(TipoFiesta tipoFiesta) {
      
         //Si por consulta no se puede se construye en memoria 
        //TODO verificar cuál se va a dejar
       List<TipoServicioxTipoFiesta> tipoServicioxTipoFiestaAll= ejbTipoServicioxTipoFiesta.findAll();
        List<TipoServicioxTipoFiesta> tipoServicioxTipoFiestaRetornar= new ArrayList<TipoServicioxTipoFiesta> ();
        
        for(TipoServicioxTipoFiesta tipoServicioxTipoFiesta:tipoServicioxTipoFiestaAll){
           //Si el tipo de fiesta corresponde al recibido por parámetros se adiciona a la lista.
            if(tipoServicioxTipoFiesta.getTipoFiesta().name().equals(tipoFiesta.name())){
                tipoServicioxTipoFiestaRetornar.add(tipoServicioxTipoFiesta);
            }
                
        }
        
        return tipoServicioxTipoFiestaRetornar;
       
                //Se retorna el producto de la consulta ( Si se puede usar la consulta) //TODO averiguar
        //return ejbTipoServicioxTipoFiesta.findByTipoFiesta(tipoFiesta);
        
       
        
    }
    
  
}